Server systems generally provide a fixed number of options. For example, there are usually a fixed number of CPU sockets, memory DIMM slots, PCI Express IO slots and a fixed number of hard drive bays, which often are delivered empty as they provide future upgradability. The customer is expected to gauge future needs and select a server chassis category that will serve present and future needs. Historically, and particularly with x86-class servers, predicting the future needs has been achievable because product improvements from one generation to another have been incremental.
With the advent of power optimized, scalable servers, the ability to predict future needs has become less obvious. For example, in this class of high-density, low-power servers within a 2U chassis, it is possible to install on the order of 120 compute nodes in an incremental fashion. Using this server as a data storage device, the user may require only 4 compute nodes, but may desire 80 storage drives. Using the same server as a pure compute function focused on analytics, the user may require 120 compute nodes and no storage drives. The nature of scalable servers lends itself to much more diverse applications which require diverse system configurations. As the diversity increases over time, the ability to predict the system features that must scale becomes increasingly difficult.
It is desirable to provide smaller sub-units of a computer system that are modular and can be connected to each other to form larger, highly configurable scalable servers. Thus, it is desirable to create a system and method to modularly scale compute resources in these power-optimized, high density, scalable servers.